/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.cip.esymons.colegiatura.bc;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.cip.esymons.colegiatura.be.ColegiadoDeporte;

/**
 *
 * @author ADMINISTRADOR
 */
@Stateless
public class ColegiadoDeporteFacade implements ColegiadoDeporteFacadeLocal {
    @PersistenceContext
    private EntityManager em;

    public void create(ColegiadoDeporte colegiadoDeporte) {
        em.persist(colegiadoDeporte);
    }

    public void edit(ColegiadoDeporte colegiadoDeporte) {
        em.merge(colegiadoDeporte);
    }

    public void remove(ColegiadoDeporte colegiadoDeporte) {
        ColegiadoDeporte aux = em.merge(colegiadoDeporte);
        em.remove(aux);
    }

    public ColegiadoDeporte find(Object id) {
        return em.find(ColegiadoDeporte.class, id);
    }

    public List<ColegiadoDeporte> findAll() {
        return em.createQuery("select object(o) from ColegiadoDeporte as o").getResultList();
    }

    public List<ColegiadoDeporte> listaColDeporte(Long codigo){
        return em.createQuery("select object(o) from ColegiadoDeporte as o where o.colCodigo.solCodigo=?1 order by o.depCodigo.depDescripcion").setParameter(1, codigo).getResultList();
    }

    public List<ColegiadoDeporte> listaDeporte(Integer codigo){
        return em.createQuery("select object(o) from ColegiadoDeporte as o where o.depCodigo.depCodigo=?1 ").setParameter(1, codigo).getResultList();
    }

    public List<ColegiadoDeporte> listaColegiadoDeporteOrdenCip(Integer codigo){
        List<ColegiadoDeporte> listaColDeporte = new ArrayList<ColegiadoDeporte>();
        listaColDeporte = null;
        listaColDeporte = em.createQuery("select object(o) from ColegiadoDeporte as o where o.depCodigo.depCodigo=?1 order by o.colCodigo.colnumeroCip ").setParameter(1, codigo).getResultList();

//        for(ColegiadoDeporte colDep : listaColDeporte){
//
//            if(colDep.getCde_fechaFinSancion().before(new Date())){
//
//                colDep.setCde_fechaFinSancion(null);
//                colDep.setCde_fechaIniSancion(null);
//                colDep.setCdeSancion(false);
//                edit(colDep);
//            }
//        }
        return listaColDeporte;
    }

    public List<ColegiadoDeporte> listaColegiadoDeporteOrdenApellidos(Integer codigo){
        List<ColegiadoDeporte> listaColDeporte = new ArrayList<ColegiadoDeporte>();
        listaColDeporte = null;
        listaColDeporte = em.createQuery("select object(o) from ColegiadoDeporte as o where o.depCodigo.depCodigo=?1 order by o.colCodigo.personaNatural.perapellidoPaterno ").setParameter(1, codigo).getResultList();
//        for(ColegiadoDeporte colDep : listaColDeporte){
//
//            if(colDep.getCde_fechaFinSancion().before(new Date())){
//
//                colDep.setCde_fechaFinSancion(null);
//                colDep.setCde_fechaIniSancion(null);
//                colDep.setCdeSancion(false);
//                edit(colDep);
//            }
//        }
        return listaColDeporte;
    }

    public List<ColegiadoDeporte> listaColegiadoDeporteOrdenDeporte(Integer codigo){
        List<ColegiadoDeporte> listaColDeporte = new ArrayList<ColegiadoDeporte>();
        listaColDeporte = null;
        listaColDeporte = em.createQuery("select object(o) from ColegiadoDeporte as o where o.depCodigo.depCodigo=?1 order by o.depCodigo.depDescripcion").setParameter(1, codigo).getResultList();
//        for(ColegiadoDeporte colDep : listaColDeporte){
//
//            if(colDep.getCde_fechaFinSancion().before(new Date())){
//
//                colDep.setCde_fechaFinSancion(null);
//                colDep.setCde_fechaIniSancion(null);
//                colDep.setCdeSancion(false);
//                edit(colDep);
//            }
//        }
        return listaColDeporte;
    }

    public List<ColegiadoDeporte> listaColegiadoDeporteOrdenNivel(Integer codigo){
        List<ColegiadoDeporte> listaColDeporte = new ArrayList<ColegiadoDeporte>();
        listaColDeporte = null;
        listaColDeporte = em.createQuery("select object(o) from ColegiadoDeporte as o where o.depCodigo.depCodigo=?1 order by o.cdeNivel").setParameter(1, codigo).getResultList();
//        for(ColegiadoDeporte colDep : listaColDeporte){
//
//            if(colDep.getCde_fechaFinSancion().before(new Date())){
//
//                colDep.setCde_fechaFinSancion(null);
//                colDep.setCde_fechaIniSancion(null);
//                colDep.setCdeSancion(false);
//                edit(colDep);
//            }
//        }
        return listaColDeporte;
    }

    public List<ColegiadoDeporte> listaColegiadoDeporteSoloSancionados(){

        List<ColegiadoDeporte> listaColDeporte = new ArrayList<ColegiadoDeporte>();
        listaColDeporte = null;
        listaColDeporte = em.createQuery("select object(o) from ColegiadoDeporte as o where o.cdeSancion=true order by o.colCodigo.personaNatural.perapellidoPaterno").getResultList();
//        for(ColegiadoDeporte colDep : listaColDeporte){
//
//            if(colDep.getCde_fechaFinSancion().before(new Date())){
//
//                colDep.setCde_fechaFinSancion(null);
//                colDep.setCde_fechaIniSancion(null);
//                colDep.setCdeSancion(false);
//                edit(colDep);
//            }
//        }
        return em.createQuery("select object(o) from ColegiadoDeporte as o where o.cdeSancion=true order by o.colCodigo.personaNatural.perapellidoPaterno").getResultList();
    }

    public void actualizaSancion(boolean sancion, Date fecha1, Date fecha2, Long codigo){

        em.createNativeQuery("UPDATE esymons.col_colegiado_deporte SET cde_sancion = ?1, cde_fechaIniSancion = ?2, cde_fechaFinSancion = ?3 WHERE cde_codigo = ?4")
                .setParameter(1, sancion)
                .setParameter(2, fecha1)
                .setParameter(3, fecha2)
                .setParameter(4, codigo);
    }


}
